themingengine: Add a private function to query lengths
authorBenjamin Otte <otte@redhat.com>
Sun, 15 Jan 2012 04:29:02 +0000 (05:29 +0100)
committerBenjamin Otte <otte@redhat.com>
Thu, 2 Feb 2012 02:14:00 +0000 (03:14 +0100)
gtk/gtkstylecontext.c
gtk/gtkstylecontextprivate.h
gtk/gtkthemingengine.c
gtk/gtkthemingengineprivate.h

index 370c782055d22364375168a524cfbf03a82f4e42..c4669eb5862bdb89e377df28a516d89f2d4dd6ef 100644 (file)
@@ -2372,6 +2372,22 @@ _gtk_style_context_peek_property (GtkStyleContext *context,
   return _gtk_css_computed_values_get_value_by_name (data->store, property_name);
 }
 
+double
+_gtk_style_context_get_number (GtkStyleContext *context,
+                               const char      *property_name,
+                               double           one_hundred_percent)
+{
+  const GValue *value;
+  const GtkCssNumber *number;
+  
+  value = _gtk_style_context_peek_property (context, property_name);
+  number = g_value_get_boxed (value);
+  if (number->unit == GTK_CSS_PERCENT)
+    return number->value * one_hundred_percent * 0.01;
+  else
+    return number->value;
+}
+
 const GValue *
 _gtk_style_context_peek_style_property (GtkStyleContext *context,
                                         GType            widget_type,
index ffde8db52e6225df53bbb6ebc4624f23c182e5e1..59a8a698ca2555360c8683cfa48e749767de5b2e 100644 (file)
@@ -27,6 +27,9 @@ G_BEGIN_DECLS
 
 const GValue * _gtk_style_context_peek_property              (GtkStyleContext *context,
                                                               const char      *property_name);
+double         _gtk_style_context_get_number                 (GtkStyleContext *context,
+                                                              const char      *property_name,
+                                                              double           one_hundred_percent);
 const GValue * _gtk_style_context_peek_style_property        (GtkStyleContext *context,
                                                               GType            widget_type,
                                                               GtkStateFlags    state,
index bac1f723016f7881d4a4393c70e95b1bc995b267..ce90769ed6f5d3fe5ede76c0b42dd51899164ed8 100644 (file)
@@ -340,6 +340,17 @@ _gtk_theming_engine_peek_property (GtkThemingEngine *engine,
   return _gtk_style_context_peek_property (engine->priv->context, property_name);
 }
 
+double
+_gtk_theming_engine_get_number (GtkThemingEngine *engine,
+                                const char       *property_name,
+                                double            one_hundred_percent)
+{
+  g_return_val_if_fail (GTK_IS_THEMING_ENGINE (engine), 0.0);
+  g_return_val_if_fail (property_name != NULL, 0.0);
+
+  return _gtk_style_context_get_number (engine->priv->context, property_name, one_hundred_percent);
+}
+
 /**
  * gtk_theming_engine_get_property:
  * @engine: a #GtkThemingEngine
index 3cb20d82c34875290acfd62da506e6afeb435cf0..10db6f74707db7ec0dcf94d0751ae8b13d1c2557 100644 (file)
@@ -30,5 +30,8 @@ void _gtk_theming_engine_paint_spinner (cairo_t *cr,
 
 const GValue *_gtk_theming_engine_peek_property (GtkThemingEngine *engine,
                                                  const char       *property_name);
+double        _gtk_theming_engine_get_number    (GtkThemingEngine *engine,
+                                                 const char       *property_name,
+                                                 double            one_hundred_percent);
 
 #endif /* __GTK_THEMING_ENGINE_PRIVATE_H__ */